﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.Threading.Tasks;

namespace Aliyun.MQS.SDK
{
    public class CreatingQueueOption
    {
        public CreatingQueueOption()
        {
            this.DelaySeconds = 0;
            this.MaximumMessageSize = 65535;
            this.MessageRetentionPeriod = 345600;
            this.VisibilityTimeout = 30;
            this.PollingWaitSeconds = 0;
        }

        /// <summary>
        /// 发送到该 Queue 的所有消息默认将以DelaySeconds参数指定的秒数延后可被消费，单位为秒。取值范围0 ~ 604800(7天)，默认值0。
        /// </summary>
        public int DelaySeconds { get; set; }

        /// <summary>
        /// 发送到该 Queue 的消息体的最大长度，单位为 byte。取值范围1024(1K) ~ 65536(64k)，默认值65536(64k)。
        /// </summary>
        public int MaximumMessageSize { get; set; }

        /// <summary>
        /// 消息在该 Queue 中最长的存活时间，从发送到该队列开始经过此参数指定的时间后，不论消息是否被取出过都将被删除，单位为秒。取值范围60 (1 分钟) ~ 1296000(15 天)，默认值345600 (4 天)。
        /// </summary>
        public int MessageRetentionPeriod { get; set; }

        /// <summary>
        /// 消息从该 Queue 中取出后从Active 状态变成 Inactive 状态后的持续时间，单位为秒。取值范围1 ~ 43200(12小时)，默认值30秒。
        /// </summary>
        public int VisibilityTimeout { get; set; }

        /// <summary>
        /// 当 Queue 消息量为空时，针对该 Queue的 ReceiveMessage 请求最长的等待时间①，单位为秒。取值范围0 ~ 30 秒，默认值0秒。
        /// </summary>
        public int PollingWaitSeconds { get; set; }

    }
}
